#pragma once

#include <gexpl_gpio_ctl.h>
#include <gofcl_gpio_ctl0.h>

// 0到7号引脚的各种配置
typedef struct {
	gpio_pin_ctl_e pin0_ctl : 4;
	gpio_pin_ctl_e pin1_ctl : 4;
	gpio_pin_ctl_e pin2_ctl : 4;
	gpio_pin_ctl_e pin3_ctl : 4;
	gpio_pin_ctl_e pin4_ctl : 4;
	gpio_pin_ctl_e pin5_ctl : 4;
	gpio_pin_ctl_e pin6_ctl : 4;
	gpio_pin_ctl_e pin7_ctl : 4;
} gpio_ctl_0_7_s;

_Static_assert(sizeof(gpio_ctl_0_7_s) == 4,
	       "Struct gpio_ctl_0_7_s defined error!");

// 配置给定GPIO的0到0号引脚的配置。
static inline void gpio_setup_pin_0_7(gpio_qe gpio_q, gpio_ctl_0_7_s ctl0) {
	union {
		gpio_ctl0_s c;
		gpio_ctl_0_7_s d;
	} cd = {
		.d = ctl0,
	};
	gpio_wreg_ctl0_s(gpio_q, cd.c);
}
